# -*- coding=utf-8 -*-

'''
获取每个省的所有数据
第一步是获取总量
第二步是将总数按30条数据分组，看能分成多少组
第三步是将组数循环，然后拼成url来请求

此demo的作用就是获取页面的总数，然后按每页30行来分组
使用url：https://db.yaozh.com/hmap?grade=全部&p=1&pageSize=30&province=四川省&type=全部

难点：发现超过7页之后，数据就直接跳转到第7页了.
比如：访问https://db.yaozh.com/hmap?grade=全部&p=10&pageSize=30&province=四川省&type=全部
就跳转到了：https://db.yaozh.com/hmap?grade=全部&p=10&pageSize=30&province=四川省&type=全部
这个功能可以对比chrome访问：view-source:https://db.yaozh.com/hmap?grade=%E5%85%A8%E9%83%A8&p=12&pageSize=30&province=%E5%9B%9B%E5%B7%9D%E7%9C%81&type=%E5%85%A8%E9%83%A8
'''

import re
import urllib.request
import urllib.parse
import math

import urllib3



from selenium import webdriver

def get_province_obj_count(url):
    #print(url.encode("utf-8"))
    page_content=urllib.request.urlopen(url).read()
    page_content_decode=page_content.decode("utf-8")
    pattern='data-total="([0-9]+?)"'
    result=re.compile(pattern).findall(page_content_decode)
    return result[0]

def get_page_source_obj(url):
    # 获得渲染js后得到的html网页
    #driver = webdriver.PhantomJS()
    driver=webdriver.Chrome()
    driver.get(url)
    city_weather_content_info = driver.page_source
    print(city_weather_content_info)
    driver.quit()
    return city_weather_content_info

if __name__ == '__main__':
    print("梁金洋")
    province_name=urllib.parse.quote("四川省")
    grade=urllib.parse.quote("全部")
    type=urllib.parse.quote("全部")
    p=1
    pagesize=30
    base_url="https://db.yaozh.com/"
    param="hmap?grade=%s&p=%d&pageSize=%d&province=%s&type=%s"  % (grade,p,pagesize,province_name,type)
    target_url=base_url+param
    #print(target_url)
    row_num=int(get_province_obj_count(target_url))

    #分组
    print(math.ceil(row_num/30))

    #得到所有的请求页地址
    for i in range(1,math.ceil(row_num/30)+1):
        param_page="hmap?grade=%s&p=%d&pageSize=%d&province=%s&type=%s"  % (grade,i,pagesize,province_name,type)
        page_request_url=base_url+param_page
        print(page_request_url)
        if(i==231):
            print(i)
            get_page_source_obj(page_request_url)
            # page_content = urllib.request.urlopen(page_request_url).read()
            # page_content_decode = page_content.decode("utf-8")
            # print(page_content_decode)


